<template>
  <div>
    <div v-for="m in menuList" :key="m.id" class="menu-item">
      <el-menu-item v-if="checkChild(m.children)" :index="m.resourcePath">
        <m-iconfont :icon="m.resourceIcon" />
        <span slot="title">{{ m.resourceName }}</span>
      </el-menu-item>
      <el-submenu v-else :index="m.id || ''">
        <template slot="title">
          <m-iconfont :icon="m.resourceIcon" />
          <span class="sub-menu-title">{{ m.resourceName }}</span>
        </template>
        <menu-item :menu-list="m.children" />
      </el-submenu>
    </div>
  </div>
</template>

<script>
import mIconfont from '@pc/m-components/m-iconfont';
export default {
  name: 'MenuItem',
  components: { mIconfont },
  props: {
    menuList: {
      type: Array,
      default: () => [],
    },
  },
  methods: {
    // 遍历子节点，判定是否按钮，是按钮则推入数组
    // 重复的只存在超级管理员，不做去重
    // 1、菜单；2、按钮权限；3、其他
    checkChild(list) {
      return (
        list &&
        list.every((item) => {
          if (Number(item.type) === 2) {
            // push进状态管理里面
            this.$nextTick(() => {
              this.$store.commit('pushRoleArr', item.code);
            });
            return item;
          }
        })
      );
    },
  },
};
</script>
<style lang="less">
// 设置icon高亮颜色与默认色
.menu-item .el-menu-item:hover i {
  color: #fff;
}
.menu-item .el-submenu:hover i {
  color: #fff;
}
.menu-item .el-menu-item i {
  color: #fff;
}
.menu-item .el-submenu i {
  color: #fff;
  // color: red;
}
.menu-item .sub-menu-title {
  margin-right: 30px;
}
.el-menu-item:hover span {
  color: #fff;
}

.el-submenu:hover .el-submenu__title span {
  color: #fff;
}
.el-menu-item span {
  color: #fff;
}
.el-submenu span {
  color: #fff;
}
.submenu .menu-item {
  color: #fff;
}
.el-menu-item:hover .el-submenu__title span {
  color: #fff;
}
</style>
